网络安全

关于 Csrf 防御

Csrf 是跨站请求伪造,其利用的是浏览器中 Cookie 直接用作某网站认证身份的不安全性。

以下是一个不恰当但足以表明 csrf 原理的例子:

  1. 用户 Bob 登录某银行网站,该网站通过 Cookie 进行登录态验证。

  2. 黑客 Wally 知道该网站的漏洞,故制作了一个危险网站,内部有如下 html 代码:

  3. 用户 Bob 在仍持有银行 Cookie 的前提下,不小心访问了危险网站。

  4. 加载图片将自动发出 get 请求,因为持有 Cookie,所以银行认为这次 get 请求是处于登录态的 Bob 发出的合法请求,导致每次访问后 Bob 都在不知情的情况下向 wally 转账 1000 块。

Csrf 能成功是因为 Cookie 直接用于身份验证的不安全性。防范 Csrf 的几个办法:

  1. 服务端生成一个伪随机数,客户端页面的所有表单带上这个随机数,填写表单后发回服务端验证这个随机数。
  2. 服务端签发Token,客户的每次请求带上Token,服务端验证Token。